/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia.Decoradores;

import DTOs.DTOProducto;
import entidadesNegocio.TipoProducto;
import excepciones.ExpertoProductosException;
import expertos.ExpertoProductos;
import java.util.List;
import persistencia.Conexion;

/**
 *
 * @author diego
 */
public class DecoradorProductos extends ExpertoProductos {

    @Override
    public void crearNuevoTipoProducto(String codigo, String nombreTipo) throws ExpertoProductosException {
        try {
            Conexion.getInstancia().iniciarTX();
            super.crearNuevoTipoProducto(codigo, nombreTipo);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoProductosException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void eliminarTipoProducto(TipoProducto tipo) throws ExpertoProductosException {
        try {
            Conexion.getInstancia().iniciarTX();
            super.eliminarTipoProducto(tipo);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoProductosException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void guardarProducto(DTOProducto nuevoProdDTO) throws ExpertoProductosException {
        try {
            Conexion.getInstancia().iniciarTX();
            super.guardarProducto(nuevoProdDTO);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoProductosException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void guardarTipoProducto(TipoProducto tipo) throws ExpertoProductosException {

        try {
            Conexion.getInstancia().iniciarTX();
            super.guardarTipoProducto(tipo);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoProductosException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void guardarTipoProducto(List<TipoProducto> listaTipo) throws ExpertoProductosException {

        try {
            Conexion.getInstancia().iniciarTX();
            super.guardarTipoProducto(listaTipo);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoProductosException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }
}
